package com.v1.video.util;

import android.app.Activity;
import android.content.Context;
import android.content.pm.ActivityInfo;
import android.graphics.Rect;
import android.util.DisplayMetrics;
import android.view.Window;
import android.view.WindowManager;

public class WindowUtils {
	
	/**
	 * 一、DecorView为整个Window界面的最顶层View。

                 二、DecorView只有一个子元素为LinearLayout。代表整个Window界面，包含通知栏，标题栏，内容显示栏三块区域。

                 三、LinearLayout里有两个FrameLayout子元素。

               为标题栏显示界面。只有一个TextView显示应用的名称。也可以自定义标题栏，载入后的自定义标题栏View将加入FrameLayout中。

               为内容栏显示界面。就是setContentView()方法载入的布局界面，加入其中。

	 */
	
	/**
	 * 设置自定义标题
	 * @param act
	 * @param resLayoutID
	 */
	public static void setCustomWindowTitle(Activity act,int resLayoutID){
		act.requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);
		act.getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, resLayoutID);
	}
	
	/**
	 * 屏幕高度
	 * @param cxt
	 * @return
	 */
	public static int getScreenHeight(Context cxt) {
		if(cxt != null){
			DisplayMetrics dm=new DisplayMetrics();
			WindowManager wm=(WindowManager) cxt.getSystemService(Context.WINDOW_SERVICE);
			wm.getDefaultDisplay().getMetrics(dm);
			return dm.heightPixels;
		}
		return 0;
	}
	
	/**
	 * 屏幕宽度
	 * @param cxt
	 * @return
	 */
	public static int getScreenWidth(Context cxt){
		if(cxt != null){
			DisplayMetrics dm=new DisplayMetrics();
			WindowManager wm=(WindowManager) cxt.getSystemService(Context.WINDOW_SERVICE);
			wm.getDefaultDisplay().getMetrics(dm);
			return dm.widthPixels;
		}
		return 0;
	}

	/**
	 * 把密度转换为像素
	 */
	public static int dip2px(Context context, float px) {
		final float scale = getDensity(context);
		return (int) (px * scale + 0.5);
	}
	
	/**
	 * 设备密度dpi
	 * @param cxt
	 * @return
	 */
	public static float getDensity(Context cxt){
		if(cxt != null){
			DisplayMetrics dm=new DisplayMetrics();
			WindowManager wm=(WindowManager) cxt.getSystemService(Context.WINDOW_SERVICE);
			wm.getDefaultDisplay().getMetrics(dm);
			return dm.density;
		}
		return 0;
	}
	
	/**
	 * 获取系统状态栏:带电量，系统提示的位置
	 * @param act
	 * @return
	 */
	public static int getStatusBarHeight(Activity act){
		if(act != null){
			Rect frame = new Rect(); 
			act.getWindow().getDecorView().getWindowVisibleDisplayFrame(frame);  
			return frame.top;
		}
		return 0;
	}
	
	/**
	 * 获取系统标题栏
	 * @param act
	 * @return
	 */
	public static int getTitleBarHeight(Activity act){
		if(act != null){
			//statusBarHeight是上面所求的状态栏的高度
			int statusBarHeight = getStatusBarHeight(act); 
			int contentTop = act.getWindow().findViewById(Window.ID_ANDROID_CONTENT).getTop();  
			int titleBarHeight = contentTop - statusBarHeight;  
			return titleBarHeight;
		}
		return 0;
	}
	
	/**
	 * 获取状态栏和标题栏的总高度
	 * @param act
	 * @return
	 */
	public static int getStatusAndTitleHeight(Activity act){
		if(act != null){
			int contentTop = act.getWindow().findViewById(Window.ID_ANDROID_CONTENT).getTop(); 
			return contentTop;
		}
		return 0;
	}
	
	/**
	 * 
	 * 描          述 ：隐藏系统标题栏
	 * @param window
	 *
	 */
	public static void hideTitleBar(Activity window){
		window.requestWindowFeature(Window.FEATURE_NO_TITLE);
		
		
	}
	
	/**
	 * 
	 * 描          述 ：隐藏状态栏
	 * @param window
	 *
	 */
	public static void hideStatusBar(Activity window){
		window.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
						WindowManager.LayoutParams.FLAG_FULLSCREEN);
	}
	
	/**
	 * 
	 * 描          述 ：固定屏幕为水平方向
	 * @param window 窗口对象
	 *
	 */
	public static void setScreenLandscape(Activity window){
		window.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
	}
	
	/**
	 * 
	 * 描          述 ：固定屏幕方向为垂直方向
	 * @param window
	 *
	 */
	public static void setScreenPortrait(Activity window){
		window.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
	}	
}
